package fibonacci;

/**
 * Created with IntelliJ IDEA.
 * Description:斐波那契数列模型 -- 编码解码问题
 * User: YJ
 * Date: 2023-9-21
 * Time: 16:02
 */
public class Fibonacci3 {
    public static int fibonacci(String ss) {
        // 1.创建dp表
        // 2.初始化
        // 3.填表
        // 4.返回值
        int n = ss.length();
        char[] s = ss.toCharArray();
        int[] dp = new int[n];
        //初始化第一个位置
        if (s[0] != '0') {
            dp[0] = 1;
        }
        //处理边界情况
        if (n == 1) {
            return dp[0];
        }
        //初始化第二个位置
        if (s[1] != '0' && s[0] != '0') {
            dp[1] += 1;
        }
        int t = (s[0] - '0') * 10 + s[1] - '0';
        if (t >= 10 && t <= 26) {
            dp[1] += 1;
        }
        for (int i = 2; i < n; i++) {
            //处理第一种情况
            if (s[i] != '0') {
                dp[i] += dp[i - 1];
            }
            //处理第二种情况
            int tt = (s[i - 1]- '0' ) * 10 + s[i] - '0';
            if (tt >= 10 && tt <= 26) {
                dp[i] += dp[i - 2];
            }
        }
        return dp[n - 1];
    }

    public static void main(String[] args) {
        System.out.println(fibonacci("12"));
    }
}
